AWS Lambdaレイヤー作成方法

概要

AWS Lambdaでライブラリを利用する際、レイヤーを作成することでライブラリの管理が簡単になり、業務ロジックのソースコードサイズを小さくすることができます。これにより、Lambdaのソースコードサイズが大きくなりすぎてAWSコンソール上での確認や編集が困難になる問題を回避できます。

Pythonでレイヤーを作成する方法を説明します。LambdaはLinuxベースで動作しているため、Windows環境でライブラリを取得するとLambda実行時にエラーが発生することがあります。そのため、WSL(Windows Subsystem for Linux)を使ってLinux環境でライブラリを取得することをお勧めします。

レイヤー作成方法

WSLの設定

WSLをインストールし、Linux環境を設定します。WSL内でのファイル操作は、Windowsのファイルシステムとも統合されています。具体的には、WSLで/mnt/d/にファイルを置くと、WindowsのDドライブ直下にファイルが表示されます。

ライブラリのソースコードを取得

WSLを開き、以下のPIPコマンドで必要なライブラリを指定のパスにダウンロードします。これにより、依存ライブラリも自動的に取得されます。

Bash
pip download requests --dest /mnt/d/python/lib/python3.12/site-packages/ 
pip download pytz --dest /mnt/d/python/lib/python3.12/site-packages/ 
pip download mysql-connector-python --dest /mnt/d/python/lib/python3.12/site-packages/

ライブラリの解凍

ダウンロードした.whlファイルを解凍します。

Bash
unzip /mnt/d/python/lib/python3.12/site-packages/pytz-2024.1-py2.py3-none-any.whl -d /mnt/d/python/lib/python3.12/site-packages/

不要なファイルの削除

解凍後の.whlファイルを削除します。

Bash
rm /mnt/d/python/lib/python3.12/site-packages/*.whl

ZIPファイルの作成

解凍されたライブラリを/python/lib/python3.12/site-packages/フォルダー構成の下に置き、全体をZIPファイルに圧縮します。Lambdaがライブラリを認識できるよう、パスの「python3.12」をLambdaのランタイムバージョンに合わせる必要があります。例えば、ランタイムがPython 3.10の場合、パスはpython/lib/python3.10/site-packages/にします。

AWS Lambda Layerの作成

  • AWS管理コンソールにログインし、Lambdaサービスに移動します。
  • 左側のナビゲーションで「レイヤー」を選択し、「レイヤーの作成」ボタンをクリックします。
  • レイヤーの名前、説明、ランタイム環境(例:Python 3.12)などの情報を入力します。
  • 作成したZIPファイルをアップロードします。50MBまでのサイズのファイルを直接アップロード可能ですが、それ以上のサイズの場合はS3に保存し、S3のURLを入力します。

Lambda関数へのレイヤー追加

  • レイヤーを追加したいLambda関数を開き、その画面の一番下までスクロールします。
  • 「レイヤーの追加」をクリックし、カスタムレイヤーオプションを選択して、作成したレイヤーを選択し、追加します。

Lambda関数でのライブラリ利用

ソースコード内で、通常のimport文を使ってライブラリを追加できます。python复制代码import requests import pytz import mysql.connector

この方法で、Lambda関数のソースコードの管理が簡単になり、効率的にライブラリを利用できるようになります。

参考資料

  1. レイヤーによる Lambda 依存関係の管理

Categories:

Tags:


评论

发表回复